package com.wzx.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wzx.common.exception.LeadNewsException;
import com.wzx.common.pojo.resp.Result;
import com.wzx.user.dto.*;
import com.wzx.user.mongo.GroupInfoDto;
import com.wzx.user.mongo.SendMsg;
import com.wzx.user.mongo.SystemMsg;
import com.wzx.user.pojo.Group;
import com.wzx.user.vo.GroupAddAdmin;
import com.wzx.user.vo.GroupQueryUserVo;
import com.wzx.user.vo.GroupVo;

import java.util.List;

/**
 * @author wzx
 * @version 1.0
 * @date 2022/7/28 - 21:35
 * @description 标题
 */
public interface GroupService extends IService<Group> {
    GroupDto createGroup(GroupVo groupVo) throws LeadNewsException;

    GroupInfoDto getGroupInfo(Integer gid);

    Result getMsgByGroup(Integer page, Integer size, Integer gid);

    SendMsg addGroup(SystemMsg systemMsg);

    List<UserDto> getGroupFriend(Integer userId, Integer gid);

    void deleteGroupById(Integer groupId,Integer userId);

    GroupHeadInfoDto queryGroupByHeadInfo(Integer groupId, Integer userId) throws LeadNewsException;

    void updateGroupByHeadInfo(GroupHeadInfoDto groupHeadInfoDto) throws LeadNewsException;

    List<GroupUserDto> queryGroupUsers(GroupQueryUserVo groupQueryUserVo);

    Group queryGroupInfo(Integer groupId);

    void changeGroupState(GroupInfoStateDto groupInfoStateDto);

    void changeUsersAdmin(GroupAddAdmin groupAddAdmin);

    void deleteGroupByIds(Integer groupId, Integer[] userIds);

    void dissolutionGroup(Integer groupId);

    List<Group> queryGroupByUser(Integer userId);
}
